home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
program
/
p063b9s.zip
/
UNIT
/
DOSSHELL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-04-20
|
3KB
|
89 lines
UNIT DosShell;
{╔══════════════════════════════════════════════════════════════════════════╗}
{║ Procedure to Shell To Dos or Run program Last changed: 20.04.96 SA ║}
{║ ║}
{║ (C) Copyright 1989-94 by ║}
{║ Dan Wulff, Jens Sandalgaard, Steen Christensen & S¢ren Ager ║}
{║ ║}
{║ This source may not be given to anybody, without the written permission ║}
{║ from The Portal Team. ║}
{╚══════════════════════════════════════════════════════════════════════════╝}
{$I POPDEFS.INC}
INTERFACE
USES Use32;
FUNCTION ShellToDos(CONST Prog, Param: String; SaveScr: Boolean): Integer;
IMPLEMENTATION
USES Dos,
{$IFNDEF OS2}
OpMacro,
{$ENDIF}
OpCrt, OpWindow,
{$IFDEF StackCheck}
OpStack,
{$ENDIF}
PoPTypes, FileUtil, LogFile, Globals;
FUNCTION ShellToDos(CONST Prog, Param : String; SaveScr: Boolean): Integer;
VAR
DosGate : windowptr;
swp, CurrentDir : PathStr;
gemcsr, TmpMode : Word;
SaveMacroState,LogWasOpen : Boolean;
BEGIN
IF SaveScr THEN
BEGIN
New(DosGate,InitCustom(1, 1, ScreenWidth, ScreenHeight, DefaultColorSet, wClear+wSaveContents));
DosGate^.Draw;
END;
LogWasOpen:=LogFileOpen;
CloseFiles(False);
TmpMode:=LastMode; {SetBlink(On);}
gemcsr:=CursorTypeSL;
normalcursor;
GetDir(0, CurrentDir);
{$IFNDEF OS2}
WriteMacroFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'));
SaveMacroState:=MacrosAreOn;
RemoveMacros;
{$ENDIF}
{$IFDEF StackCheck}
RestoreInt8;
{$ENDIF}
{$IFNDEF PMode}
I16;
{$ENDIF}
IF Cfg.SwapDir<>'' THEN Swp:=Cfg.SwapDir ELSE Swp:='';
{$IFDEF OS2}
{ Lav ny session }
{$ELSE}
ShellToDos:=ExecDSwap(Prog+' '+Param, False, Nil, swp + MakeTaskFileName(PoPSwapFileName));
{$ENDIF}
ChangeDir(CurrentDir);
{$IFNDEF PMode}
R16;
{$ENDIF}
{$IFDEF StackCheck}
InstallInt8;
{$ENDIF}
IF Not Cfg.Screen.KeepOffScrMode THEN TextMode(TmpMode);
{$IFNDEF OS2}
InitMacros;
ReadMacroFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'),False);
DeleteFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'));
MacrosAreOn:=SaveMacroState;
{$ENDIF}
SetCursorSize(Hi(GemCsr),Lo(GemCsr));
IF SaveScr THEN
BEGIN
DosGate^.EraseHidden; Dispose(DosGate, Done);
END;
OpenFiles(LogWasOpen);
END;
END.